'''
----歌手大赛----
为丰富校园文化生活，学校拟组织一场歌手大赛，从参赛选手中选拔出10名相对突出的学生，授予“校园十大歌手”称号。
比赛设有评委组，每名选手演唱完毕后会由评委组的10名评委打分。
为保证比赛公平公正、防止作弊和恶意打分，计算得分（即打分的平均分）时会先去掉最高分和最低分。
本案例要求编写程序，实现根据需求计算每位选手得分的功能。
'''
# score_list = []
# for i in range(10):
#     score = float(input(f'请第{i + 1}个评委输入评分：'))
#     score_list.append(score)
# score_list.remove(max(score_list))
# score_list.remove(min(score_list))
# print('去掉最低分和最高分后，该选手的平均分为：' , sum(score_list)/len(score_list))

'''
----登录函数----
编写一个用户登录逻辑，用户名密码提前设置（列表嵌套字典存储），返回用户登录成功或者失败的结果。
'''
# tag = 0
# user1 = {'id': '1', 'username': 'tom', 'password': '123456'}
# user2 = {'id': '2', 'username': 'jerry', 'password': '123456'}
# user3 = {'id': '3', 'username': 'rose', 'password': '123456'}
# user_list = [user1, user2, user3]
#
# name = input('请输入你的用户名：')
# pwd = input('请输入你的密码：')
# for user in user_list:
#     if name == user['username'] and pwd == user['password']:
#         tag = 1
#         break
# if tag == 1:
#     print('登录成功')
# else:
#     print('登录失败')

'''
案例：排序算法（冒泡排序）
'''
# number = [6, 4, 2, 5, 1, 3]
# for i in range(len(number) - 1):
#     for j in range(len(number) - 1 - i):
#         if number[j] > number[j + 1]:
#             number[j], number[j + 1] = number[j + 1], number[j]
# print(number)

'''
----银行ATM----
银行ATM存款取款：
1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式)；
2.提示用户输入银行卡和密码，遍历每张卡的信息验证是否成功；
3.如果用户输入正确---提示让用户选择取款.存款还是退出,并提示余额多少.  输入错误---重新输入卡号密码；
  选择取款---提示输入取款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额；
  选择存款---输入存款额度,余额加上相应额度,并提示余额多少；
  选择退出---重新登录；
4.连续3次输入错误账号密码,提示银行卡已被锁定，程序结束。
'''

count = 0
# 1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式)；
cards = [
    { 'id':'1001' , 'password':'123' , 'balance':3000},
    { 'id':'1002' , 'password':'123' , 'balance':10000},
    { 'id':'1003' , 'password':'123' , 'balance':20000}
]
# 2.提示用户输入银行卡和密码，遍历每张卡的信息验证是否成功；
while True:
    tag = 0
    cid = input('请输入你的银行卡号：')
    pwd = input('请输入你的密码：')
    for card in cards:
        if cid == card['id'] and pwd == card['password']:
            tag = 1
            print("登录成功！您的银行卡余额为：", card['balance'])
            break

# 3.如果用户输入正确---提示让用户选择取款.存款还是退出,并提示余额多少.  输入错误---重新输入卡号密码；
    if tag == 0:
        count += 1
# 4.连续3次输入错误账号密码,提示银行卡已被锁定，程序结束。
        if count == 3:
            print("银行卡已被锁定")
            break
        else:
            print(f"卡号或密码错误，还剩{3 - count}次登录机会")
            continue
    while True:
        msg = int(input("请输入你想办理的业务（取款：1   存款：2    退出：3）："))
        # 选择取款 - --提示输入取款额度, 如果超过余额, 提示余额不足;否则, 在余额上减掉相应金额；
        if msg == 1:
            out = float(input("ATM机取款限额5000元，请输入取款金额："))
            if out > card['balance']:
                print("余额不足")
            else:
                card['balance'] -= out
                print("取款成功，当前余额：", card['balance'])
        # 选择存款 - --输入存款额度, 余额加上相应额度, 并提示余额多少；
        elif msg == 2:
            deposit = float(input("请输入存款金额："))
            card['balance'] += deposit
            print("存款成功，当前余额：", card['balance'])
        # 选择退出---重新登录；
        elif msg == 3:
            print("退出成功")
            break
        else:
            print("暂不支持该业务")
            continue